package com.wugui.datax.rpc.registry;

import java.util.Map;
import java.util.Set;
import java.util.TreeSet;

/**
 * service registry
 *
 * <p>/xxl-rpc/dev/ - key01(service01) - value01 (ip:port01) - value02 (ip:port02)
 *
 * @author xuxueli 2018-10-17
 */
public abstract class ServiceRegistry {

  /** start */
  public abstract void start(Map<String, String> param);

  /** start */
  public abstract void stop();

  /**
   * registry service, for mult
   *
   * @param keys service key
   * @param value service value/ip:port
   * @return
   */
  public abstract boolean registry(Set<String> keys, String value);

  /**
   * remove service, for mult
   *
   * @param keys
   * @param value
   * @return
   */
  public abstract boolean remove(Set<String> keys, String value);

  /**
   * discovery services, for mult
   *
   * @param keys
   * @return
   */
  public abstract Map<String, TreeSet<String>> discovery(Set<String> keys);

  /**
   * discovery service, for one
   *
   * @param key service key
   * @return service value/ip:port
   */
  public abstract TreeSet<String> discovery(String key);
}
